문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 AMD 불도저 마이크로아키텍처 (문단 편집) === 부동소수점 연산 유닛(FPU) 문제 === 의외로 단일 스레드 실행 환경에서 FPU의 성능이 떨어지는 문제가 있는데 그 이유는 엄격하게 스케줄 된 FgMT(Fine-Grained Multithreading) 때문. FgMT란 슈퍼스칼라 파이프라인에 사이클마다 각각의 스레드가 돌아가면서 명령을 하나하나 인출하는 방식인데, 여기까지는 괜찮은데 문제는 이 순서가 필요에 따라서 유연하게 돌아가는게 아니라 고정되어 엄격하게 지켜지는 것이다. 이 때문에 하나의 스레드가 FPU 자원 전체를 사용하지 못하고, 그에 따라 단일 스레드 애플리케이션의 경우 그냥 나머지 절반의 시간은 놀게 되며 이는 마치 단일 스레드에서 정수 연산 유닛의 절반이 노는 문제와 유사한 상황을 유발한다. 이는 유연한 FgMT가 생각보다 만들기 까다롭고, 개발비도 부족하고, 출시일도 수차례 미루어서 더 이상 연기할 수 없다고 판단해 엄격한 FgMT로 땜질해 출시했다고 추측된다. 이 문제점은 결국 불도저의 핵심적인 문제 중 하나로 자리잡았고, 2012년 이후 불도저 코어 고성능 CPU 개발을 포기하면서 개선된 FgMT가 구현된 아키텍처는 영영 볼 일이 없어지게 되었다. 만약 유연한 FgMT가 구현된 모듈 아키텍처가 있었다면 모듈당 실수 및 정수 스트리밍의 단일 스레드 성능은 동클럭에서 샌디브릿지의 90% 까지 나왔을 것이다. 사실상 불도저가 참패한 주요 원인 중 하나. FgMT가 제대로 구현되었다면 모듈은 여전히 1코어인지 2코어인지 구분하기 애매했을 것이다. 하지만 엄격한 FgMT로 내부적으로 분리되어 동작하는 경우 모듈 기술은 사실상 작게 분리된 2코어라고 부를 수도 있다. 사실 FPU의 성능이 떨어지는 것이 단순히 실수 연산 성능의 저하만을 불러오는 것으로 오해하기 쉬운데 현대적인 SSE나 AVX 명령어들은 실수 뿐만 아니라 패킹된 정수값들도 동시에 처리하도록 되어 있다.[* 128비트에서 패킹된 16비트 정수를 반환하는 {{{punpckhwd}}}나 {{{punpcklwd}}} 같은 것들] 즉 FPU의 성능 저하는 스트리밍 혹은 패킹된 정수 처리나 메모리 로드-스토어 기능에도 직접적인 악영향을 주게 된다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기